一、Roles 作用
当使用场景比较复杂时,单独使用 playbook 的话会增加编写 YAML 文件的复杂度,同时文件也不易理解,传承的成本较大。这时候我们就需要使用 Roles 来编写我们的 Playbook。
Roles 能够根据层次型结构自动装载变量文件、tasks 以及handlers 等。简单来说,roles 就是分别将变量、文件、任务、模板及处理器等放置于单独的目录中,并可以便捷的引用它们的一种机制。
二、Roles 目录结构
1 | ├── ansible.cfg # 配置文件 |
ansible 并不要求 role 包含上述所有的目录及文件,只需要根据 role 的功能需要加入对应的目录和文件即可。
三、使用方法
1 | 1、创建目录 |
四、在 Playbook 调用角色(Roles)
1 | $ cat hello_roles.yml |
可以看到通过 roles 方法执行后的结果等同于之前的 Playbook 结果。1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30$ ansible-playbook -i hosts hello_roles.yml
PLAY [all] *********************************************************************************************************************************************************************************************************************************************************************
TASK [Gathering Facts] *********************************************************************************************************************************************************************************************************************************************************
ok: [10.15.3.36]
ok: [10.15.0.163]
TASK [add group nginx] *********************************************************************************************************************************************************************************************************************************************************
ok: [10.15.3.36]
ok: [10.15.0.163]
TASK [add user nginx] **********************************************************************************************************************************************************************************************************************************************************
ok: [10.15.3.36]
ok: [10.15.0.163]
TASK [Install nginx] ***********************************************************************************************************************************************************************************************************************************************************
ok: [10.15.3.36]
ok: [10.15.0.163]
TASK [write the nginx config file] *********************************************************************************************************************************************************************************************************************************************
ok: [10.15.3.36]
ok: [10.15.0.163]
TASK [ensure nginx is running] *************************************************************************************************************************************************************************************************************************************************
changed: [10.15.3.36]
changed: [10.15.0.163]
PLAY RECAP *********************************************************************************************************************************************************************************************************************************************************************
10.15.0.163 : ok=6 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
10.15.3.36 : ok=6 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0